#include <iostream>
using std::cout;
using std::endl;
using std::string;


void test0(){
    string str("hello");
    //用下标方式遍历
    for(size_t idx = 0; idx < str.size(); ++idx){
        cout << str[idx] << " ";
    }
    cout << endl;

    //增强for循环!!!
    //引用符号代表操作的是string中的元素
    //如果没有引用符号，就会进行复制
    //冒号左边代表任一元素，右边代表容器
    //
    //增强for循环通常跟auto配合
    //auto表示自动推导类型
    for(char & ch:str){
    /* for(auto & ch:str){ */
        cout << ch << " ";
    }
    cout << endl;


    //迭代器方式实现遍历（迭代器可以认为是广义的指针）
    /* string::iterator it = str.begin(); */
    //begin、end返回的是相应迭代器类型的指针
    //begin指向容器中首个元素的位置，
    //end指向容器中最后一个元素的后一个位置
    auto it = str.begin();
    while(it != str.end()){
        //解引用，输出对应位置的元素
        cout << *it << " ";
        ++it;
    }
    cout << endl;
}

int main(void){
    test0();
    return 0;
}
